home *** CD-ROM | disk | FTP | other *** search
/ C & C++ Multimedia Cyber Classroom / C and C++ Multimedia Cyber Classroom (Prentice Hall) (1998).iso / src / fig10_01.jar / Ch10 / Fig10_01 / Employ2.cpp < prev    next >
C/C++ Source or Header  |  1997-10-29  |  2KB  |  51 lines

  1. // Fig. 10.1: employ2.cpp
  2. // Member function definitions for
  3. // abstract base class Employee.
  4. // Note: No definitions given for pure virtual functions.
  5. #include <string.h>
  6. #include <assert.h>
  7. #include "employ2.h"
  8.  
  9. // Constructor dynamically allocates space for the
  10. // first and last name and uses strcpy to copy
  11. // the first and last names into the object.
  12. Employee::Employee( const char *first, const char *last )
  13. {
  14.    firstName = new char[ strlen( first ) + 1 ];
  15.    assert( firstName != 0 );    // test that new worked
  16.    strcpy( firstName, first );
  17.  
  18.    lastName = new char[ strlen( last ) + 1 ];
  19.    assert( lastName != 0 );     // test that new worked
  20.    strcpy( lastName, last );
  21. }
  22.  
  23. // Destructor deallocates dynamically allocated memory
  24. Employee::~Employee()
  25. {
  26.    delete [] firstName;
  27.    delete [] lastName;
  28. }
  29.  
  30. // Return a pointer to the first name
  31. // Const return type prevents caller from modifying private 
  32. // data. Caller should copy returned string before destructor 
  33. // deletes dynamic storage to prevent undefined pointer.
  34. const char *Employee::getFirstName() const 
  35.    return firstName;   // caller must delete memory
  36. }
  37.  
  38. // Return a pointer to the last name
  39. // Const return type prevents caller from modifying private 
  40. // data. Caller should copy returned string before destructor 
  41. // deletes dynamic storage to prevent undefined pointer.
  42. const char *Employee::getLastName() const
  43. {
  44.    return lastName;   // caller must delete memory
  45. }
  46.  
  47. // Print the name of the Employee
  48. void Employee::print() const
  49.    { cout << firstName << ' ' << lastName; }
  50.